'''不改变其他元素剔除数组中不符合要求的元素(下面的方法只适合一维数组)以下三种方法都改变了二维数组本来的结构。展成了一维数组。
数组中每行元素之间用','隔开 矩阵中间用‘ ’ 隔开 ，压分清楚'''


'''定义一个3行4列的2维数组'''
arr1 = [ [0]*4 ]*3
print(arr1)
'''
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
'''

arr1[1][1]=5  #修改第二行第二个的数值为5
print(arr1)
'''
[[0, 5, 0, 0], [0, 5, 0, 0], [0, 5, 0, 0]]   会发现每一行的第二个元素都被修改了
'''
# 因为当时定义的时候arr1 3行是同一个[0]*4的索引，所以一个被改变，其他的都被改变。

'''正确的定义的方法1'''
# arr2=[ [0 for i in range(1,5)] for j in range(1,4)]
# arr2[1][1]=5
# print(arr2)   #[[0, 0, 0, 0], [0, 5, 0, 0], [0, 0, 0, 0]]
# print('-'*50)
'''正确的定义的方法3使用Numpy模块,创建一个m * n 的初始值为0的二维数组  numpy.zeros((m,n))'''
# from numpy import *
# import numpy
#
# arr3 = numpy.ones((4,3)) # 创建一个初始值全为1的4x3矩阵
# print(arr3)
#
# print('-'*50)                                                             #  [[ 1  2  3  4]
# arr4 = array([arange(1,5),arange(5,9),arange(9,13)]) # 创建3行4列的数组      #   [ 5  6  7  8]
# print(arr4)                                                               #   [ 9 10 11 12]]
#
# # arr4[x][0:] 获取arr4数组 第x+1行的全部元素
# print('-'*50)
# print(arr4[1][0:])
#
# #arr[1:3]获取数组第2-3行的全部元素（多行）
# print('-'*50)
# print(arr4[1:3])
#
# # arr[x::y] 分片操作，从第x行开始，步长为y
# print('-'*50)
# print(arr4[0::3])
#
# print('-'*50)
# # 生成随机矩阵
# # import numpy as np
# # 在[1,5]之间，随机生成一个5x5的矩阵
# matrix1= numpy.random.randint( 1,6 , (5,5) )
# print(matrix1)

'''创建二维列表'''
# lists = [[] for i in range(3)]  # 创建的是多行三列的二维列表
# for i in range(3):
#        lists[0].append(i)
# for i in range(5):
#        lists[1].append(i)
# for i in range(7):
#        lists[2].append(i)
# print("lists is:", lists)
# # lists is: [[0, 1, 2], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5, 6]]


'''输出数组的行和列数'''
# arr5 = [[1,4,7,10,15], [2,5,8,12,19], [3,6,9,16,22], [10,13,14,17,24]]
# print(arr5)                 #以列表形式输出
# print(np.array(arr5))       #将列表转换成数组
# print(np.array(arr5).shape) #一起输出行和列(4, 5)
# # 只输出行数
# print(np.array(arr5).shape[0]) # 4
# # 只输出列数
# print(np.array(arr5).shape[1]) # 5
#
# arr = [[1, 4, 7, 10, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24]]
# print(len(arr))  # 获取列表行数
# print(len(arr[0])) # 获取列表列数


arr5=[ [1 ,2 ,3 ,4],
       [5 ,6 ,7 ,8],
       [3 ,1 ,2 ,4],
       [1 ,2 ,4 ,6]  ]

item=[]
for i in arr5:
       for j in i:
              print(j,end=' ')
       print('\n')


#
# for i in arr5.shape:
#     for j in i:
#         print(arr5[i][j])

'''利用列表句柄遍历列表中的元素'''
# list2 = [[1,2,3],[4,5]]
# for i in list2: #第一层遍历的是列表中的每一个元素，即每一个一维列表 例如[1,2,3]
#     for j in i:  #第二层是从每一个一维列表中遍历其中单个的值
#         print(j,end=' ')

